// pages/phoneLogin/phoneLogin.js
import {
  http
} from '../../utils/network.js'
import {
  PATHS_ALIAS, OTHER_INFO
} from '../../utils/api.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    phone: '',
    yzm: '',
    seconds: '',      //倒计时读秒
    yzmSending:false,     //验证码发送中
    errShow:false,  //错误提示是否显示
    errTxt:'',      //错误提示内容
    actType: '', //	0代表微信号与新手机号做关联。1代表与已注册手机号做关联.2代表手机号已注册且绑定了非当前的微信号 3代表手机号已于该微信号关联，返回直接使用第三方登录即可
    fromPage:'',    //跳转路径--登录成功之后跳转的路径
    webUrl: encodeURIComponent('https://weixin.96225.com/weixin/yhzcxy.html'),      //webView的地址
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    let fromPage = decodeURIComponent(options.fromPage);
    this.setData({
      fromPage: options.fromPage ? decodeURIComponent(fromPage)+'':'/pages/index/index'
    })
    console.log(this.data.fromPage);
  },
  // 登录
  login: function() {
    if (!this.checkPhone() || !this.checkYzm()){return;}
    // wx.showLoading({
    //   title: '登录中...',
    //   mask: true
    // });
    let _this = this;
    let actType = this.data.actType;
    if (actType == '0') { //手机号未注册
      this.newUserLogin();
    } else if (actType == '1') { //手机号已注册，未关联微信号   
      this.oldUserLogin();
    } else if (actType == '2') {   //手机号已注册，关联微信非本微信号
      wx.showModal({
        title: '提示',
        content: '该手机已关联微信号，是否重新关联？',
        showCancel: true,
        cancelText: '取消',
        cancelColor: '#F45450',
        confirmText: '确定',
        confirmColor: '#F45450',
        success: function (res) {
          if (res.confirm) {
            _this.oldUserLogin();
          } else if (res.cancel) {
          }
        }
      })
    } else {
      wx.showToast({
        title: "请先发送验证码",
        icon: "none"
      });
    }
  },
  // 未注册用户登录
  newUserLogin:function(){
    let _this = this;
    let params = {
      mobile: this.data.phone,
      thirdId: wx.getStorageSync('unionId'), //	第三方id	string	
      businessType: '01',
      logType: '07',
      resId: 'weixin',
      userSystem: '0052',
      userType: '0',
      verCode: this.data.yzm
    };
    http({
      path: PATHS_ALIAS.CHECK_REGIEST_WITHOUT_PASS,
      params: params,
      header: {
        sendChl: 'hzsmk.h5',// 应用渠道(必填) 
        sendClient: 'hellohzsmk', //应用验证码(必填) string 
        clientCode: OTHER_INFO.clientCode
      },
      success: function (res) {
        //console.log(res);
        // 保存用户token
        wx.setStorageSync('accessToken', res.response.accessToken);
        wx.setStorageSync('userId', res.response.userId);
        wx.setStorageSync('mobile', res.response.mobile);
        _this.successJump();
      },
      fail: function (err) {
        setTimeout(function () {
          wx.hideLoading();
        }, 2000)
      },
      complete:function(){
        
      }
    })
  },
  // 已注册用户登录
  oldUserLogin:function(){
    let _this = this;
    let params = {
      logType: '07',    //	登陆类型
      mobile: this.data.phone,    //	手机号	
      thirdId: wx.getStorageSync('unionId'),    //	第三方id
      veriCode: this.data.yzm,    //	验证码
    };
    http({
      path: PATHS_ALIAS.LOGIN_MSG_CHECK,
      params: params,
      header: {
        sendChl: 'hzsmk.h5',// 应用渠道(必填) 
        sendClient: 'hellohzsmk', //应用验证码(必填) string 
        clientCode: OTHER_INFO.clientCode
      },
      success: function (res) {
        //console.log(res);
        // 保存用户token
        wx.setStorageSync('accessToken', res.response.accessToken);
        wx.setStorageSync('userId', res.response.userId);
        wx.setStorageSync('mobile', res.response.mobile);
        _this.successJump();
      },
      fail: function (err) {
        //console.log(err);
        setTimeout(function(){
          wx.hideLoading();
        },2000)
      },
      complete: function () {
        
      }
    })
  },
  // 登录成功-跳转路径
  successJump:function(){
    let fromPage = this.data.fromPage;
    if (fromPage == '/pages/index/index' || fromPage == '/pages/my/my'){
      wx.switchTab({
        url: fromPage,
      })
    }else{
      wx.redirectTo({
        url: fromPage,
      })
    }
  },
  // 发送验证码--校验手机号是否注册或已绑定第三方
  sendYzm: function() {
    let _this = this;
    let phone = this.data.phone;
    if(!this.checkPhone()){
      return;
    }else{
      this.setData({
        errShow:false,
        errTxt:'',
        yzmSending:true
      });
    }

    let params = {
      logType: '07', //	登录类型	string	02 - 微信openid登录 03-支付宝id登录 05-qq id登录 06 - 微博 id登录 07 - 微信unionid登录
      mobile: phone, //	手机号	string	
      thirdId: wx.getStorageSync('unionId'), //	第三方id	string	
      userNameType: '1', //	用户名类型	string	传1
    };
    http({
      path: PATHS_ALIAS.CHECK_THIRD_USER_EXIST,
      params: params,
      header: {
        sendChl: 'hzsmk.h5', // 应用渠道(必填) 
        sendClient: 'hellohzsmk', //应用验证码(必填) string 
      },
      success: function(res) {
        // //console.log(res);
        // 校验成功
        _this.setData({
          actType: res.response.actType
        });
        _this.sendMessage();
      },
      fail: function(err) {
        //console.log(err);
        // //console.log("判断手机号绑定关系失败")
        wx.showToast({
          title: err.msg,
          icon: 'none'
        });
        _this.setData({
          yzmSending: false
        })
      }
    })
  },
  // 校验成功-发送验证码
  sendMessage: function() {
    let actType = this.data.actType;
    let _this = this;
    if (actType == '0') { //未注册，去注册并关联
      let params = {
        mobile: this.data.phone,
        businessType: '01'
      };
      http({
        path: PATHS_ALIAS.SEND_REGISTER_MSG,
        params: params,
        header: {
          sendChl: 'hzsmk.h5', // 应用渠道(必填) 
          sendClient: 'hellohzsmk', //应用验证码(必填) string 
        },
        success: function(res) {
          //console.log(res);
          // 开始倒计时
          _this.countTime();
        },
        fail: function(err) {
          // //console.log("发送短信失败")
          wx.showToast({
            title: err.msg,
            icon: 'none'
          });
        },
        complete:function(opts){
          _this.setData({
            yzmSending: false
          })
        }
      })
    } else if (actType == '1' || actType == '2') { //登录
      let params = {
        mobile: this.data.phone,
        businessType: '02'
      };
      http({
        path: PATHS_ALIAS.SEND_REGISTER_MSG,
        params: params,
        header: {
          sendChl: 'hzsmk.h5', // 应用渠道(必填) 
          sendClient: 'hellohzsmk', //应用验证码(必填) string 
        },
        success: function(res) {
          // //console.log(res);
          // 开始倒计时
          _this.countTime();
        },
        fail: function(err) {
          //console.log(err);
          //console.log("发送短信失败")
          wx.showToast({
            title: err.msg,
            icon: 'none'
          })
        },
        complete: function (opts) {
          _this.setData({
            yzmSending: false
          })
        }
      })
    } else if (actType == '3') {   //已关联该手机号，请直接登录
      _this.successJump();
    }
  },
  // 倒计时
  countTime: function() {
    // 提示已发送验证码
    var _this = this;
    wx.showToast({
      title: "验证码已发送到您的手机，请注意查收！",
      icon: "none"
    });
    _this.setData({
      seconds: 60
    });
    var h = this.data.seconds;
    var time = setInterval(function() {
      if (h > 0) {
        h--;
        _this.setData({
          seconds: h
        });
      } else {
        clearInterval(time);
      }
    }, 1000)

  },
  // 输入监听
  inputWacth: function(e) {
    let item = e.currentTarget.dataset.model;
    this.setData({
      [item]: e.detail.value
    });
  },
  // 校验手机号码
  checkPhone: function() {
    var phone = this.data.phone;
    let regPhone = /^0?1[3-9|4|5|7|8|9][0-9]\d{8}$/;
    // 校验手机号
    if (!phone) {
      this.setData({
        errShow: true,
        errTxt: '请输入手机号'
      });
      return false;
    } else if (!regPhone.test(phone)) {
      this.setData({
        errShow: true,
        errTxt: '手机号格式有误'
      });
      return false;
    } else {
      this.setData({
        errShow: false,
        errTxt: ''
      });
      return true;
    }
  },
  // 校验验证码
  checkYzm: function() {
    var yzm = this.data.yzm;
    if (yzm.length < 6) {
      this.setData({
        errShow: true,
        errTxt: '验证码有误'
      });
      return false;
    } else {
      this.setData({
        errShow: false,
        errTxt: ''
      });
      return true;
    }
  },





  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {
    wx.hideLoading();
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})